Conventionally, a RAID (Redundant Array of Independent Disks) system comprises a RAID controller for configuring a plurality of HDs (hard disks) as a virtual HD of very high capacity by hardware or software. Principles of storing data adopted by RAID system utilizes the method by dividing data into bit strips or block strips (which is the dominant one) and storing block strips in data blocks of different HDs respectively. Thus, in case of any HD failure it is possible of reconstructing corruptive data by comparing data stored in parity blocks of other operating HDs with data stored in data blocks of the same and conducting XOR (Xclusive OR) operations. It is known that data is written into a plurality of read/write heads of the plurality of HDs in a very high rate in a RAID system. Further, data strips are stored on data blocks of different HDs. Thus, a RAID system has a feature of fault tolerant, thereby providing a highly reliable way of storing data.
A widely commercially available type of RAID system (e.g., RAID-5 (RAID Level 5)) is schematically shown in FIG. 1. The RAID system comprises three (3) HDs 11, 12, and 13 and a RAID controller (not shown). An XOR gate of the RAID controller divides data 10 into a plurality of data blocks A, B, C, D, E, and F prior to storing data in the RAID system. The data blocks A and E are belonged to HD 11, the data blocks B and C are belonged to HD 12, and the data blocks D and F are belonged to HD 13 respectively. Also, CRC (cyclical redundancy check) is performed on data with corresponding parity blocks stored in different HDs 11, 12, and 13 in which a first parity block P contains data blocks C and D (i.e., P(C, D)) in the HD 11, a second parity block P contains data blocks E and F (i.e., P(E, F)) in the HD 12, and a third parity block P contains data blocks A and B (i.e., P(A, B)) in the HD 13 respectively. In a case of data block being defective on any HD (e.g., the HD 13), it is impossible of reading data from the failed HD as shown in FIG. 2. The RAID controller then recovers the RAID system into a degraded mode. Further, the RAID system may recess data from data blocks and parity blocks of the HDs 11 and 12. As shown in FIG. 3, the failed HD 13 is then replaced with a new HD 14. The RAID system is then reconstructed by the RAID controller by writing data into the new HD 14 by utilizing data in the data blocks A, B, C, and D and parity blocks P(C, D) and P(E, F) of the HDs 11 and 12. As a result, the RAID system can operate normally again.
It is also possible that there are two HD failures (e.g., the HDs 12 and 13) in the typical RAID system as shown in FIG. 4. The RAID controller is thus no longer capable of recovering the RAID system into a degraded mode if this occurs. As such, the task of reconstructing data of the failed HDs cannot be achieved, resulting in a crash of the RAID system. Thus, it is desirable among manufacturers of the art to provide a novel method for reconstructing data in case of two HDs of a RAID being failed and RAID system therefor in order to overcome the inadequacies of the prior art.